package com.ai.dmc.index.intf.service.indicatorstore;

import com.ai.dmc.index.common.exception.BusinessException;
import com.ai.frame.bean.InputObject;
import com.ai.frame.bean.OutputObject;

/**
 * Title： 指标超市展示层接口
 * Description： 指标超市展示层接口
 * Copyright：Copyright (c) 2009
 * Company：北京亚信智慧数据科技有限公司
 * @author lg, 2016年1月11日
 * @version 1.0
 */
public interface IIndicatorStoreService {

    /**
     * 获取所有指标的目录层级，以及该用户选择的一级指标分类目录
     * 
     * @param inputObject
     * @param outputObject
     * @throws BusinessException
     */
    public void selectIndicatorFolderInfo(InputObject inputObject, OutputObject outputObject) throws BusinessException;

    /**
     * 获取全量维度选择信息
     * 
     * @param inputObject
     * @param outputObject
     * @throws BusinessException
     */
    public void selectCommonDimInfo(InputObject inputObject, OutputObject outputObject) throws BusinessException;

    /**
     * 获取过滤条件下指标信息
     * 
     * @param inputObject
     * @param outputObject
     * @throws BusinessException
     */
    public void selectIndicatorsInfo(InputObject inputObject, OutputObject outputObject) throws BusinessException;

    /**
     * 关注或取消关注某指标
     * 
     * @param inputObject
     * @param outputObject
     * @throws BusinessException
     */
    public void doIndicatorAttenOrCancel(InputObject inputObject, OutputObject outputObject) throws BusinessException;

    /**
     * 查询用户关注指标分类
     * 
     * @param inputObject
     * @param outputObject
     * @throws BusinessException
     */
    public void selectIndicatorAttenFolder(InputObject inputObject, OutputObject outputObject) throws BusinessException;

    /**
     * 用户创建关注指标分类
     * 
     * @param inputObject
     * @param outputObject
     * @throws BusinessException
     */
    public void createIndicatorAttenFolder(InputObject inputObject, OutputObject outputObject) throws BusinessException;

    /**
     * 用户删除关注指标分类
     * 
     * @param inputObject
     * @param outputObject
     * @throws BusinessException
     */
    public void deleteIndicatorAttenFolder(InputObject inputObject, OutputObject outputObject) throws BusinessException;

    /**
     * 更新用户选择的一级指标分类以及分类顺序
     * 
     * @param inputObject
     * @param outputObject
     * @throws BusinessException
     */
    public void updateUserIndicatorFolder(InputObject inputObject, OutputObject outputObject) throws BusinessException;

    /**
     * 点击加入指标组装单后，指标组装单数+1
     * 
     * @param inputObject
     * @param outputObject
     * @throws BusinessException
     */
    public void addIndicatorAssembleCount(InputObject inputObject, OutputObject outputObject) throws BusinessException;

    /**
     * 查询指标组装单数
     * 
     * @param inputObject
     * @param outputObject
     * @throws BusinessException
     */
    public void selectIndicatorAssembleCount(InputObject inputObject, OutputObject outputObject) throws BusinessException;

    /**
     * 初始化查询指标的版本和最新版本详细信息
     * 
     * @param inputObject
     * @param outputObject
     * @throws BusinessException
     */
    public void selectIndicatorBaseInfo(InputObject inputObject, OutputObject outputObject) throws BusinessException;

    /**
     * 查询指标的每个版本详细信息
     * 
     * @param inputObject
     * @param outputObject
     * @throws BusinessException
     */
    public void selectIndicatorBaseInfoByVersion(InputObject inputObject, OutputObject outputObject) throws BusinessException;
}
